#include <stdio.h>
#include <signal.h>
#include <unistd.h>
// 思路2: nginx程序和bash在不同的session中
int main(int argc, char const *argv[])
{
    pid_t pid;
    printf("running.....\n");

    pid = fork(); // 系统函数, 用来创建新进程
    // 子进程会从这句fork()调用之后开始执行, 原来的父进程也会接着往下进行

    if (pid < 0)
    {
        printf("fork() ERROR!\n");
    }
    else if (pid == 0)
    {
        // 如果执行的是子进程, 该条件会满足
        printf("child process running!\n");
        setsid();
        for (;;)
        {
            sleep(1);
            printf("child: sleeping for 1 second\n");
        }

        return 0;
    }
    else
    {
        for (;;)
        {
            sleep(1);
            printf("parent: sleeping for 1 second\n");
        }
    }

    printf("exiting! bye...\n");
    return 0;
}



// aquawius@DESKTOP-CKR7QDI:/mnt/c/Users/QU$ ps -eo pid,ppid,sid,tty,pgrp,comm | grep -E 'bash|PID|nginx|keep'
//   PID  PPID   SID TT        PGRP COMMAND
//   981    67   981 pts/3      981 bash
// 21698    67 21698 pts/8    21698 bash
// 22334 22333 22334 pts/6    22334 bash
// 22411 21698 21698 pts/8    22411 keepRun3
// 22412 22411 22412 ?        22412 keepRun3